package com.yf.basic;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.springframework.beans.BeanUtils;

import com.yf.entity.CmsContentFile;

public class Utils {
	public static final String imgUrlRegex="<img +src=\"(.*?)\"";
	public static final String attachmentUrlRegex="href=\"(.*?)\" +title=\".*?\"";
	/**
	 * 将html文本转换成纯文本内容，去掉所有html标签。
	 * @param htmlStr
	 * @return
	 */
	public static String html2Text(String htmlStr) {
		//定义script的正则表达式
		String regEx_script="<script[^>]*?>[\\s\\S]*?<\\/script>";
		//定义style的正则表达式
		String regEx_style="<style[^>]*?>[\\s\\S]*?<\\/style>"; 
		//定义HTML标签的正则表达式
		String regEx_html="<[^>]+>"; 
		//定义HTML空格的正则表达式
		String regEx_space="&nbps";
		//过滤script标签
		Pattern p_script=Pattern.compile(regEx_script,Pattern.CASE_INSENSITIVE);
		Matcher m_script=p_script.matcher(htmlStr);
		htmlStr=m_script.replaceAll(""); 
		//过滤style标签
		Pattern p_style=Pattern.compile(regEx_style,Pattern.CASE_INSENSITIVE);
		Matcher m_style=p_style.matcher(htmlStr);
		htmlStr=m_style.replaceAll(""); 
		//过滤html标签
		Pattern p_html=Pattern.compile(regEx_html,Pattern.CASE_INSENSITIVE);
		Matcher m_html=p_html.matcher(htmlStr);
		htmlStr=m_html.replaceAll(""); 
		//过滤html空格
		Pattern p_space=Pattern.compile(regEx_space,Pattern.CASE_INSENSITIVE);
		Matcher m_space=p_space.matcher(htmlStr);
		htmlStr=m_space.replaceAll(""); 
		//返回文本字符串
		return htmlStr.trim();  
	}
	
	/**
	 * 复制List中对象的属性
	 * @param poList
	 * @return voList
	 */
	public static <Vo> List<Vo> copyList(List<?> poList,Class<Vo> Vo) {
		List<Vo> voList=new ArrayList<>();
		Vo voObj=null;
		for(Object poObj:poList) {	
			BeanUtils.copyProperties(poObj, voObj);
			voList.add(voObj);
		}
		return voList;
	}
	/**
	 * 获取文章中上传的附件及图片地址,上传的附件及图片须保存在带有upload的路径中
	 * @param string
	 * @return
	 */
	public static List<String>  getUploadUrl(String regex,String string) {
		Pattern p=Pattern.compile(regex);
		Matcher m=p.matcher(string);
		List<String> strList=new ArrayList<String>();
		while(m.find()) {
			//包含upload文件夹的是上传的图片
			if(m.group(1).contains("upload"))
				strList.add(m.group(1));		
		}
		return strList;
	}
	/**
	 * 获取文章中的附件地址
	 * @param string
	 * @return
	 */
	public static List<String> getAttachmentUrl(String string){
		String exp="href=\"(.*?)\" +title=\".*?\"";
		Pattern p=Pattern.compile(exp);
		Matcher m=p.matcher(string);
		List<String> strList=new ArrayList<>();
		while(m.find()) {
			//包含upload文件夹的是上传的附件
			if(m.group(1).contains("upload"))
				strList.add(m.group(1));		
		}
		return strList;
	}
	
	public static Map<String,Object> compareUrl(List<CmsContentFile> contentFileList,List<String> newUrlList){
		Map<String,Object> urlMap=new HashMap<>();
		if(contentFileList.isEmpty()) {
			if(newUrlList.isEmpty()) {
				return urlMap;
			}
		}
		List<String> oldUrlList=new ArrayList<>();
		contentFileList.forEach(item->{
			oldUrlList.add(item.getFilePath());
		});
		oldUrlList.forEach(oldUrl->{
			newUrlList.forEach(newUrl->{
				if(oldUrl.equals(newUrl)) {
					oldUrlList.remove(oldUrl);
					newUrlList.remove(newUrl);
				}
			});
		});
		urlMap.put("delUrl", oldUrlList);
		urlMap.put("addUrl", newUrlList);
		return urlMap;
	}
}
